import java.util.ArrayList;
import java.util.List;


public class Produccion {

    public class Entrada {
	private final String _simbolo;
	private final String _produccion;
	public Entrada(String simbolo, String produccion){
	    _simbolo = simbolo;
	    _produccion = produccion;
	}
	public String getSimbolo() {
	    return _simbolo;
	}
	public String getProduccion() {
	    return _produccion;
	}
    }

    private String _noTerminal = null;
    private String _prod1 = null;
    private String _prod2 = null;
    private List<String> _primeros = new ArrayList<String>();
    private List<String> _siguientes = new ArrayList<String>();

    public Produccion(String noTerminal, String prod1, String prod2) {
	_noTerminal = noTerminal;
	_prod1 = prod1;
	_prod2 = prod2;
    }

    public String getNoTerminal() {
	return _noTerminal;
    }

    public List<String> getPrimeros() {
	return _primeros;
    }

    public List<String> getSiguientes() {
	return _siguientes;
    }
    
    public String getProd1() {
        return _prod1;
    }

    public String getProd2() {
        return _prod2;
    }

    public List<Entrada> generarEntradas() {
	List<Entrada> entradas = new ArrayList<Entrada>();
	
	for(String s : _primeros){
	    if("id".equals(s) && null != _prod2 && _prod2.endsWith("id")){
		entradas.add(new Entrada(s,_prod2));
	    }else{
		     if("a".equals(s) && null != _prod2 && _prod2.endsWith("a")){
		     entradas.add(new Entrada(s,_prod2));
	          }else{
		            entradas.add(new Entrada(s,_prod1));
	               }
		     }
	}
	

	
	if(null != _prod2 && _prod2.endsWith("" + new Character('\u025b'))){
	    for(String s : _siguientes){
		entradas.add(new Entrada(s,_prod2));
	    }
	}
	
	return entradas;
    }
}
